题目背景有些……………
通过题目我们可以知道最终我们要求的式子就是:
于是我们将式子拆开:
前面的这些都很容易求出,但是最后的 $\sum_{i=1}^{n}a_ib_i$ 无法很快算出,我们算答案的时候枚举 $c$ 以及手环旋转了多少,这个时候如果在里面直接大力计算 $\sum_{i=1}^{n}a_ib_i$ 可以拿到 $30$ 分。如果将这个式子在之前拿出来预处理一下,将会拿到 $70$ 分。
这个时候将 $a_i$ 反向,式子变为:$\sum_{i=1}^{n}a_{n-i+1}b_i$ ,可以发现这是一个卷积,是可以用 $FFT$ 跑的,众所周知 $FFT$ 的复杂度是 $O(nlogn)$ ,是能跑过的。
具体实现的时候我们需要将 $a$ 拉成两倍长,或者说是断环为链?至于为什么的话,是因为题目要求了这个数列是可以旋转的。然后按照上式将 $b$ 反向就好了。
Code:
1 |
|
本文标题:【题解】 [AH2017/HNOI2017]礼物 FFT luoguP3723/bzoj4827
文章作者:Qiuly
发布时间:2019年03月15日 - 00:00
最后更新:2019年03月29日 - 13:52
原始链接:http://qiulyblog.github.io/2019/03/15/[题解]bzoj4827/
许可协议: 署名-非商业性使用-禁止演绎 4.0 国际 转载请保留原文链接及作者。